package com.wtx.chapter02;

import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Predicate;

/**
 * @description: 函数接口: 只有一个抽象方法的接口, 用作lambda的类型。
 *                  使用只有一个方的接口来表示特定方法并反复使用, 比如 ActionListener
 * @author: wtx
 * @createDate: 2020/5/31
 */
public class Test1 {
    public static void main(String[] args) {

        //关于类型推断===========================================================

        //1、菱形语法, <>, 根据 wordCount 类型推断出 new HashMap<>()的类型
        Map<String,Integer> wordCount = new HashMap<>();
        //2、根据方法签名推断
        Test1.useHashMap(new HashMap<>());

        //Java8 可以省略Lambda中所有参数的类型, 由javac根据上下文推断

        //3、Predicate 用于判断真假的函数接口
        // 返回值就是lambda主体的值
        // 如果不指定泛型, lambda没有足够的信息, 无法进行类型推断
        Predicate<Integer> atLeast5 = x -> x>5;
        System.out.println(atLeast5.test(5));

    }
    public static void useHashMap(Map<String,Integer> map){
        System.out.println("test....");
    }
}
